# 笔记

# 微信小程序知识

# callback

由于微信小程序的 wx.request 为异步请求,且使用的是回调函数来获取返回值(回调地狱),使用不同函数来调用时为了不产生回调地狱,则必须使用 callback 来处理返回值,封装多少层就会有多个 callback,很是难受。

所以可以封装 Promise。

# Promise

# async await

ES7 语法,需要在小程序勾选增强编译

# 简易数据单向绑定

Vue 是双向数据绑定,可以绑定复杂的数据

# 样式

写样式时(特别是组件开发),width 指定 750rpx 则可以用 100% 替代,因为父容器的宽度不确定性

# ES6 模版字符串

# 普通函数 VS 箭头函数的 this 指向问题

# 前端 View 层的 JS 是否应该写业务逻辑

一般 View 层应该仅做数据绑定

# NPM semver

版本号规则

~0.6.2:只会安装0.6.x中第三位 latest 版本

^0.6.2:会安装0.x.x中第二、三位 latest 版本

# 小程序使用 NPM 包

npn init 后安装。之后可以在 node_modules 该 npm 包的 package.json 中 version查看真实安装的版本,_id不知是不是

还需要安装后点击「工具」—「构建 npm」,构建完毕会自动创建 miniprogram_npm 目录,这个才是最终要引用的组件目录。此时 node_modules 就没有用了,除非再次构建

# 组件设计通用原则 🔥

# 组件目的

  • 对骨架、样式、业务逻辑(行为)的封装

    业务逻辑这里可以使用计数器组件来说明。有时需要根据货物数量来限制增减等

# 灵活性和易用性取舍

  • 易用性:可封装原有组件,来限制以获取易用性(提高稳定)

  • 灵活性(可提供如下方式实现):

    • Slot 插槽

    • 外部样式类

    • 业务逻辑(其实没有灵活的,目前只能做到提供多种业务逻辑,通过对属性传参来决定。否则就是另一个组件了)

      可以提供 Behavior 行为来让使用者自定义

  • 可提供**默认值(样式、插槽)**来中和

# 样式宽高的固定

  • 固定高宽,你必须要有理由,比如为了点击事件的区域更大。
  • 固定高宽,弊端就是版本更迭很繁琐。修改和维护不方便。
  • 固定高宽,数值难以确定。